package com.qf.controller;

/**
 * @author mkr
 * @version V1.0
 * @Project java2203-mkr
 * @Package com.qf.controller
 * @Description:
 * @Date 2022/5/25 16:44
 */

import com.qf.pojo.Cart;
import com.qf.pojo.User;
import com.qf.service.CartService;
import com.qf.service.impl.CartServiceImpl;

import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.List;

/**
 * 购物车管理
 *
 */
@WebServlet("/cart")
public class CartController extends BaseServlet {
    /**
     * 创建购物车
     */
    public String create(HttpServletRequest request , HttpServletResponse response){
        //1、获取商品id
        String pid = request.getParameter("pid");
        //2、获取session会话中当前用户id
        User user = (User) request.getSession().getAttribute("loginUser");
        if (user == null){
            //如果获取不到用户对象，说明用户没有登录，跳转到登录界面
            return "redirect:/login.jsp";
        }
        //3、调用业务层，将购物车存入到数据库中
        CartService cartService = new CartServiceImpl();
        cartService.createCart(user.getId() , Integer.parseInt(pid));
        //4、跳转到购物车查询列表方法
        return "redirect:/cart?method=show";
    }

    /**
     *查询指定用户的购物车数据，并跳转到购物车列表展示
     */
    public String show(HttpServletRequest request , HttpServletResponse response){
        //1、获取session会话中的当前用户的id
        User user = (User) request.getSession().getAttribute("loginUser");
        if (user == null){
            //如果获取不到用户对象，说明用户没有登录，跳转到登录界面
            return "redirect:/login.jsp";
        }
        //2、根据用户id调用业务层，查询该用户的购物车数据
        CartService cartService = new CartServiceImpl();
        List<Cart> cartList = cartService.findCarListByUid(user.getId());
        //3、将用户购物车的数据放入request域中，带到页面中展示
        request.setAttribute("list", cartList);
        //4、跳转到购物车列表页面展示
        return "forward:/cart.jsp";
    }

    /**
     * 修改购物车中购物项的购买数量
     */
    public String update(HttpServletRequest request , HttpServletResponse response){
        //1、获取session会话中的当前用户的id
        User user = (User) request.getSession().getAttribute("loginUser");
        if (user == null){
            //如果获取不到用户对象，说明用户没有登录，跳转到登录界面
            return "redirect:/login.jsp";
        }
        //2、获取购物项主键id参数
        String cid = request.getParameter("cid");
        //获取购买数量
        String cnum = request.getParameter("cnum");

        //3、调用service，执行修改业务
        CartService cartService = new CartServiceImpl();
        cartService.updateCart(Integer.parseInt(cid) , Integer.parseInt(cnum));

        //4、跳转到购物车列表方法，查看购物车中最新的数据展示
        return "redirect:/cart?method=show";
    }

    public String delete(HttpServletRequest request , HttpServletResponse response){
        //1、获取session会话中的当前用户的id
        User user = (User) request.getSession().getAttribute("loginUser");
        if (user == null){
            //如果获取不到用户对象，说明用户没有登录，跳转到登录界面
            return "redirect:/login.jsp";
        }

        //2、获取购物项主键id
        String cid = request.getParameter("cid");

        //3、调用service根据主键id删除
        CartService cartService = new CartServiceImpl();
        cartService.deleteBuId(Integer.parseInt(cid));

        //4、跳转到购物车查询列表页面。显示最新的购物数据
        return "redirect:/cart?method=show";

    }





}
